home *** CD-ROM | disk | FTP | other *** search
/ Ultra Pack / UltraComputing Partner Applications.iso / SunLabs / tclTK / src / tk4.0p2.patch < prev    next >
Text File  |  1995-09-18  |  53KB  |  1,739 lines

  1. Prereq: "4.0p1"
  2. *** ../tk4.0p1/patchlevel.h    Fri Jul 28 10:08:41 1995
  3. --- patchlevel.h    Mon Sep 18 11:42:16 1995
  4. ***************
  5. *** 17,23 ****
  6.    * See the file "license.terms" for information on usage and redistribution
  7.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  8.    *
  9. !  * @(#) patchlevel.h 1.8 95/07/18 16:23:42
  10.    */
  11.   
  12. ! #define TK_PATCH_LEVEL "4.0p1"
  13. --- 17,23 ----
  14.    * See the file "license.terms" for information on usage and redistribution
  15.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  16.    *
  17. !  * @(#) patchlevel.h 1.9 95/09/18 11:42:14
  18.    */
  19.   
  20. ! #define TK_PATCH_LEVEL "4.0p2"
  21. *** ../tk4.0p1/./tkEvent.c    Wed Jun 21 15:16:37 1995
  22. --- ./tkEvent.c    Mon Aug 28 09:33:14 1995
  23. ***************
  24. *** 14,20 ****
  25.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  26.    */
  27.   
  28. ! static char sccsid[] = "@(#) tkEvent.c 1.97 95/06/21 15:16:33";
  29.   
  30.   #include "tkPort.h"
  31.   #include "tkInt.h"
  32. --- 14,20 ----
  33.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  34.    */
  35.   
  36. ! static char sccsid[] = "@(#) tkEvent.c 1.98 95/08/28 09:33:14";
  37.   
  38.   #include "tkPort.h"
  39.   #include "tkInt.h"
  40. ***************
  41. *** 261,267 ****
  42.       register FileHandler *filePtr;
  43.       int index;
  44.   
  45. !     if (fd >= OPEN_MAX) {
  46.       panic("Tk_CreatefileHandler can't handle file id %d", fd);
  47.       }
  48.   
  49. --- 261,267 ----
  50.       register FileHandler *filePtr;
  51.       int index;
  52.   
  53. !     if (fd >= FD_SETSIZE) {
  54.       panic("Tk_CreatefileHandler can't handle file id %d", fd);
  55.       }
  56.   
  57. *** ../tk4.0p1/./tkFont.c    Sun Jun  4 15:27:43 1995
  58. --- ./tkFont.c    Wed Aug 16 10:27:56 1995
  59. ***************
  60. *** 13,19 ****
  61.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  62.    */
  63.   
  64. ! static char sccsid[] = "@(#) tkFont.c 1.36 95/06/04 15:27:43";
  65.   
  66.   #include "tkPort.h"
  67.   #include "tkInt.h"
  68. --- 13,19 ----
  69.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  70.    */
  71.   
  72. ! static char sccsid[] = "@(#) tkFont.c 1.37 95/08/16 10:27:54";
  73.   
  74.   #include "tkPort.h"
  75.   #include "tkInt.h"
  76. ***************
  77. *** 572,578 ****
  78.       if (newX > maxX) {
  79.           break;
  80.       }
  81. !     c = p[1] & 0xff;
  82.       if (isspace(UCHAR(c)) || (c == 0)) {
  83.           term = p+1;
  84.           termX = newX;
  85. --- 572,582 ----
  86.       if (newX > maxX) {
  87.           break;
  88.       }
  89. !     if (maxChars > 1) {
  90. !         c = p[1] & 0xff;
  91. !     } else {
  92. !         c = 0;
  93. !     }
  94.       if (isspace(UCHAR(c)) || (c == 0)) {
  95.           term = p+1;
  96.           termX = newX;
  97. *** ../tk4.0p1/./tkSelect.c    Thu May 11 09:37:18 1995
  98. --- ./tkSelect.c    Mon Aug 21 10:49:15 1995
  99. ***************
  100. *** 12,18 ****
  101.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  102.    */
  103.   
  104. ! static char sccsid[] = "@(#) tkSelect.c 1.47 95/05/11 09:37:15";
  105.   
  106.   #include "tkPort.h"
  107.   #include "tkInt.h"
  108. --- 12,18 ----
  109.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  110.    */
  111.   
  112. ! static char sccsid[] = "@(#) tkSelect.c 1.48 95/08/21 10:49:09";
  113.   
  114.   #include "tkPort.h"
  115.   #include "tkInt.h"
  116. ***************
  117. *** 488,496 ****
  118.       infoPtr->owner = tkwin;
  119.       infoPtr->nextPtr = dispPtr->selectionInfoPtr;
  120.       dispPtr->selectionInfoPtr = infoPtr;
  121. !     } else if ((infoPtr->owner != tkwin) && (infoPtr->clearProc != NULL)) {
  122. !     clearProc = infoPtr->clearProc;
  123. !     clearData = infoPtr->clearData;
  124.       }
  125.   
  126.       infoPtr->owner = tkwin;
  127. --- 488,506 ----
  128.       infoPtr->owner = tkwin;
  129.       infoPtr->nextPtr = dispPtr->selectionInfoPtr;
  130.       dispPtr->selectionInfoPtr = infoPtr;
  131. !     } else if (infoPtr->clearProc != NULL) {
  132. !     if (infoPtr->owner != tkwin) {
  133. !         clearProc = infoPtr->clearProc;
  134. !         clearData = infoPtr->clearData;
  135. !     } else if (infoPtr->clearProc == LostSelection) {
  136. !         /*
  137. !          * If the selection handler is one created by "selection own",
  138. !          * be sure to free the record for it;  otherwise there will be
  139. !          * a memory leak.
  140. !          */
  141. !         ckfree((char *) infoPtr->clearData);
  142. !     }
  143.       }
  144.   
  145.       infoPtr->owner = tkwin;
  146. *** ../tk4.0p1/./tkSend.c    Wed Jul 26 17:13:26 1995
  147. --- ./tkSend.c    Mon Aug 21 10:49:15 1995
  148. ***************
  149. *** 12,18 ****
  150.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  151.    */
  152.   
  153. ! static char sccsid[] = "@(#) tkSend.c 1.49 95/07/26 17:13:25";
  154.   
  155.   #include "tkPort.h"
  156.   #include "tkInt.h"
  157. --- 12,18 ----
  158.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  159.    */
  160.   
  161. ! static char sccsid[] = "@(#) tkSend.c 1.50 95/08/21 10:49:10";
  162.   
  163.   #include "tkPort.h"
  164.   #include "tkInt.h"
  165. ***************
  166. *** 65,74 ****
  167.                    * been modified, so it needs to be written
  168.                    * out when the NameRegistry is closed. */
  169.       unsigned long propLength;    /* Length of the property, in bytes. */
  170. !     char *property;        /* The contents of the property.  See format
  171. !                  * above;  this is *not* terminated by the
  172. !                  * first null character.  Dynamically
  173. !                  * allocated. */
  174.       int allocedByX;        /* Non-zero means must free property with
  175.                    * XFree;  zero means use ckfree. */
  176.   } NameRegistry;
  177. --- 65,74 ----
  178.                    * been modified, so it needs to be written
  179.                    * out when the NameRegistry is closed. */
  180.       unsigned long propLength;    /* Length of the property, in bytes. */
  181. !     char *property;        /* The contents of the property, or NULL
  182. !                  * if none.  See format description above;
  183. !                  * this is *not* terminated by the first
  184. !                  * null character.  Dynamically allocated. */
  185.       int allocedByX;        /* Non-zero means must free property with
  186.                    * XFree;  zero means use ckfree. */
  187.   } NameRegistry;
  188. ***************
  189. *** 328,334 ****
  190.       /*
  191.        * Xlib placed an extra null byte after the end of the property, just
  192.        * to make sure that it is always NULL-terminated.  Be sure to include
  193. !      * this byte in our count if it's needed to ensure null termination.
  194.        */
  195.   
  196.       if ((regPtr->propLength > 0)
  197. --- 328,336 ----
  198.       /*
  199.        * Xlib placed an extra null byte after the end of the property, just
  200.        * to make sure that it is always NULL-terminated.  Be sure to include
  201. !      * this byte in our count if it's needed to ensure null termination
  202. !      * (note: as of 8/95 I'm no longer sure why this code is needed;  seems
  203. !      * like it shouldn't be).
  204.        */
  205.   
  206.       if ((regPtr->propLength > 0)
  207. ***************
  208. *** 455,461 ****
  209.    *    None.
  210.    *
  211.    * Side effects:
  212. !  *    The open registry is exapanded;  it is marked as modified so that
  213.    *    it will be written back when closed.
  214.    *
  215.    *----------------------------------------------------------------------
  216. --- 457,463 ----
  217.    *    None.
  218.    *
  219.    * Side effects:
  220. !  *    The open registry is expanded;  it is marked as modified so that
  221.    *    it will be written back when closed.
  222.    *
  223.    *----------------------------------------------------------------------
  224. ***************
  225. *** 481,487 ****
  226.       newProp = (char *) ckalloc((unsigned) (regPtr->propLength + newBytes));
  227.       strcpy(newProp, id);
  228.       strcpy(newProp+idLength, name);
  229. !     if (regPtr->propLength > 0) {
  230.       memcpy((VOID *) (newProp + newBytes), (VOID *) regPtr->property,
  231.           regPtr->propLength);
  232.       if (regPtr->allocedByX) {
  233. --- 483,489 ----
  234.       newProp = (char *) ckalloc((unsigned) (regPtr->propLength + newBytes));
  235.       strcpy(newProp, id);
  236.       strcpy(newProp+idLength, name);
  237. !     if (regPtr->property != NULL) {
  238.       memcpy((VOID *) (newProp + newBytes), (VOID *) regPtr->property,
  239.           regPtr->propLength);
  240.       if (regPtr->allocedByX) {
  241. ***************
  242. *** 537,543 ****
  243.       }
  244.       XFlush(regPtr->dispPtr->display);
  245.   
  246. !     if (regPtr->propLength > 0) {
  247.       if (regPtr->allocedByX) {
  248.           XFree(regPtr->property);
  249.       } else {
  250. --- 539,545 ----
  251.       }
  252.       XFlush(regPtr->dispPtr->display);
  253.   
  254. !     if (regPtr->property != NULL) {
  255.       if (regPtr->allocedByX) {
  256.           XFree(regPtr->property);
  257.       } else {
  258. *** ../tk4.0p1/./tkVisual.c    Tue May  9 13:47:46 1995
  259. --- ./tkVisual.c    Wed Aug 16 10:43:49 1995
  260. ***************
  261. *** 12,18 ****
  262.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  263.    */
  264.   
  265. ! static char sccsid[] = "@(#) tkVisual.c 1.12 95/05/09 13:47:42";
  266.   
  267.   #include "tkInt.h"
  268.   #include "tkPort.h"
  269. --- 12,18 ----
  270.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  271.    */
  272.   
  273. ! static char sccsid[] = "@(#) tkVisual.c 1.13 95/08/16 10:43:48";
  274.   
  275.   #include "tkInt.h"
  276.   #include "tkPort.h"
  277. ***************
  278. *** 313,318 ****
  279. --- 313,319 ----
  280.           cmapPtr->colormap = XCreateColormap(Tk_Display(tkwin),
  281.               RootWindowOfScreen(Tk_Screen(tkwin)), visual,
  282.               AllocNone);
  283. +         cmapPtr->visual = NULL;
  284.           cmapPtr->refCount = 1;
  285.           cmapPtr->shareable = 1;
  286.           cmapPtr->nextPtr = dispPtr->cmapPtr;
  287. *** ../tk4.0p1/./tkWm.c    Sat Jul 22 16:04:58 1995
  288. --- ./tkWm.c    Mon Aug 21 10:49:16 1995
  289. ***************
  290. *** 13,19 ****
  291.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  292.    */
  293.   
  294. ! static char sccsid[] = "@(#) tkWm.c 1.107 95/07/22 16:04:57";
  295.   
  296.   #include "tkPort.h"
  297.   #include "tkInt.h"
  298. --- 13,19 ----
  299.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  300.    */
  301.   
  302. ! static char sccsid[] = "@(#) tkWm.c 1.108 95/08/21 10:49:12";
  303.   
  304.   #include "tkPort.h"
  305.   #include "tkInt.h"
  306. ***************
  307. *** 840,845 ****
  308. --- 840,846 ----
  309.               Tcl_AppendElement(interp, winPtr2->pathName);
  310.           }
  311.           }
  312. +         XFree((char *) cmapList);
  313.           return TCL_OK;
  314.       }
  315.       if (Tcl_SplitList(interp, argv[3], &windowArgc, &windowArgv)
  316. *** ../tk4.0p1/./tkMenu.c    Sat Jul 22 16:05:26 1995
  317. --- ./tkMenu.c    Sat Aug 26 17:21:15 1995
  318. ***************
  319. *** 13,19 ****
  320.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  321.    */
  322.   
  323. ! static char sccsid[] = "@(#) tkMenu.c 1.93 95/07/22 16:05:23";
  324.   
  325.   #include "tkPort.h"
  326.   #include "default.h"
  327. --- 13,19 ----
  328.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  329.    */
  330.   
  331. ! static char sccsid[] = "@(#) tkMenu.c 1.94 95/08/26 17:21:13";
  332.   
  333.   #include "tkPort.h"
  334.   #include "default.h"
  335. ***************
  336. *** 1741,1755 ****
  337.               bgBorder, menuPtr->borderWidth, mePtr->y,
  338.               Tk_Width(tkwin) - 2*menuPtr->borderWidth, mePtr->height,
  339.               menuPtr->activeBorderWidth, TK_RELIEF_RAISED);
  340. -         gc = mePtr->activeGC;
  341. -         if (gc == NULL) {
  342. -         gc = menuPtr->activeGC;
  343. -         }
  344.       } else {
  345.           Tk_Fill3DRectangle(menuPtr->tkwin, Tk_WindowId(tkwin),
  346.               bgBorder, menuPtr->borderWidth, mePtr->y,
  347.               Tk_Width(tkwin) - 2*menuPtr->borderWidth, mePtr->height,
  348.               0, TK_RELIEF_FLAT);
  349.           if ((mePtr->state == tkDisabledUid)
  350.               && (menuPtr->disabledFg != NULL)) {
  351.           gc = mePtr->disabledGC;
  352. --- 1741,1763 ----
  353.               bgBorder, menuPtr->borderWidth, mePtr->y,
  354.               Tk_Width(tkwin) - 2*menuPtr->borderWidth, mePtr->height,
  355.               menuPtr->activeBorderWidth, TK_RELIEF_RAISED);
  356.       } else {
  357.           Tk_Fill3DRectangle(menuPtr->tkwin, Tk_WindowId(tkwin),
  358.               bgBorder, menuPtr->borderWidth, mePtr->y,
  359.               Tk_Width(tkwin) - 2*menuPtr->borderWidth, mePtr->height,
  360.               0, TK_RELIEF_FLAT);
  361. +     }
  362. +     /*
  363. +      * Choose the gc for drawing the foreground part of the entry.
  364. +      */
  365. +     if ((mePtr->state == tkActiveUid) && !strictMotif) {
  366. +         gc = mePtr->activeGC;
  367. +         if (gc == NULL) {
  368. +         gc = menuPtr->activeGC;
  369. +         }
  370. +     } else {
  371.           if ((mePtr->state == tkDisabledUid)
  372.               && (menuPtr->disabledFg != NULL)) {
  373.           gc = mePtr->disabledGC;
  374. *** ../tk4.0p1/./tkCanvas.c    Thu Jul 27 13:23:50 1995
  375. --- ./tkCanvas.c    Wed Aug 16 09:42:14 1995
  376. ***************
  377. *** 12,18 ****
  378.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  379.    */
  380.   
  381. ! static char sccsid[] = "@(#) tkCanvas.c 1.101 95/07/27 13:23:48";
  382.   
  383.   #include "default.h"
  384.   #include "tkInt.h"
  385. --- 12,18 ----
  386.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  387.    */
  388.   
  389. ! static char sccsid[] = "@(#) tkCanvas.c 1.103 95/08/16 09:42:13";
  390.   
  391.   #include "default.h"
  392.   #include "tkInt.h"
  393. ***************
  394. *** 311,316 ****
  395. --- 311,317 ----
  396.       canvasPtr->drawableXOrigin = canvasPtr->drawableYOrigin = 0;
  397.       canvasPtr->bindingTable = NULL;
  398.       canvasPtr->currentItemPtr = NULL;
  399. +     canvasPtr->newCurrentPtr = NULL;
  400.       canvasPtr->closeEnough = 0.0;
  401.       canvasPtr->pickEvent.type = LeaveNotify;
  402.       canvasPtr->pickEvent.xcrossing.x = 0;
  403. ***************
  404. *** 771,776 ****
  405. --- 772,781 ----
  406.               canvasPtr->currentItemPtr = NULL;
  407.               canvasPtr->flags |= REPICK_NEEDED;
  408.           }
  409. +         if (itemPtr == canvasPtr->newCurrentPtr) {
  410. +             canvasPtr->newCurrentPtr = NULL;
  411. +             canvasPtr->flags |= REPICK_NEEDED;
  412. +         }
  413.           if (itemPtr == canvasPtr->textInfo.focusItemPtr) {
  414.               canvasPtr->textInfo.focusItemPtr = NULL;
  415.           }
  416. ***************
  417. *** 2882,2888 ****
  418.                        * LeaveWindow, ButtonRelease, or
  419.                        * MotionNotify. */
  420.   {
  421. -     Tk_Item *closestPtr = NULL;
  422.       double coords[2];
  423.       int buttonDown;
  424.   
  425. --- 2887,2892 ----
  426. ***************
  427. *** 2957,2965 ****
  428.       coords[0] = canvasPtr->pickEvent.xcrossing.x + canvasPtr->xOrigin;
  429.       coords[1] = canvasPtr->pickEvent.xcrossing.y + canvasPtr->yOrigin;
  430.       if (canvasPtr->pickEvent.type != LeaveNotify) {
  431. !     closestPtr = CanvasFindClosest(canvasPtr, coords);
  432.       }
  433.   
  434.       /*
  435.        * Simulate a LeaveNotify event on the previous current item and
  436.        * an EnterNotify event on the new current item.  Remove the "current"
  437. --- 2961,2980 ----
  438.       coords[0] = canvasPtr->pickEvent.xcrossing.x + canvasPtr->xOrigin;
  439.       coords[1] = canvasPtr->pickEvent.xcrossing.y + canvasPtr->yOrigin;
  440.       if (canvasPtr->pickEvent.type != LeaveNotify) {
  441. !     canvasPtr->newCurrentPtr = CanvasFindClosest(canvasPtr, coords);
  442. !     } else {
  443. !     canvasPtr->newCurrentPtr = NULL;
  444.       }
  445.   
  446. +     if ((canvasPtr->newCurrentPtr == canvasPtr->currentItemPtr)
  447. +         && !(canvasPtr->flags & LEFT_GRABBED_ITEM)) {
  448. +     /*
  449. +      * Nothing to do:  the current item hasn't changed.
  450. +      */
  451. +     return;
  452. +     }
  453.       /*
  454.        * Simulate a LeaveNotify event on the previous current item and
  455.        * an EnterNotify event on the new current item.  Remove the "current"
  456. ***************
  457. *** 2967,2973 ****
  458.        * item.
  459.        */
  460.   
  461. !     if ((closestPtr != canvasPtr->currentItemPtr)
  462.           && (canvasPtr->currentItemPtr != NULL)
  463.           && !(canvasPtr->flags & LEFT_GRABBED_ITEM)) {
  464.       XEvent event;
  465. --- 2982,2988 ----
  466.        * item.
  467.        */
  468.   
  469. !     if ((canvasPtr->newCurrentPtr != canvasPtr->currentItemPtr)
  470.           && (canvasPtr->currentItemPtr != NULL)
  471.           && !(canvasPtr->flags & LEFT_GRABBED_ITEM)) {
  472.       XEvent event;
  473. ***************
  474. *** 3004,3034 ****
  475.       }
  476.       
  477.       /*
  478. !      * The binding for the leave event could have changed the canvas such
  479. !      * that closestPtr should no longer be the new current item.  In fact,
  480. !      * closestPtr may not even exist anymore.  The only safe thing is to
  481. !      * recompute the new current item.  Even the mouse position may have
  482. !      * changed, so recompute coords.
  483.        */
  484. -     coords[0] = canvasPtr->pickEvent.xcrossing.x + canvasPtr->xOrigin;
  485. -     coords[1] = canvasPtr->pickEvent.xcrossing.y + canvasPtr->yOrigin;
  486. -     buttonDown = canvasPtr->state
  487. -         & (Button1Mask|Button2Mask|Button3Mask|Button4Mask|Button5Mask);
  488. -     if (canvasPtr->pickEvent.type != LeaveNotify) {
  489. -         closestPtr = CanvasFindClosest(canvasPtr, coords);
  490. -     }
  491.       }
  492. !     if ((closestPtr != canvasPtr->currentItemPtr) && buttonDown) {
  493.       canvasPtr->flags |= LEFT_GRABBED_ITEM;
  494.       return;
  495.       }
  496. !     if ((closestPtr == canvasPtr->currentItemPtr)
  497. !         && !(canvasPtr->flags & LEFT_GRABBED_ITEM)) {
  498. !     return;
  499. !     }
  500.       canvasPtr->flags &= ~LEFT_GRABBED_ITEM;
  501. !     canvasPtr->currentItemPtr = closestPtr;
  502.       if (canvasPtr->currentItemPtr != NULL) {
  503.       XEvent event;
  504.   
  505. --- 3019,3042 ----
  506.       }
  507.       
  508.       /*
  509. !      * Note:  during CanvasDoEvent above, it's possible that
  510. !      * canvasPtr->newCurrentPtr got reset to NULL because the
  511. !      * item was deleted.
  512.        */
  513.       }
  514. !     if ((canvasPtr->newCurrentPtr != canvasPtr->currentItemPtr) && buttonDown) {
  515.       canvasPtr->flags |= LEFT_GRABBED_ITEM;
  516.       return;
  517.       }
  518. !     /*
  519. !      * Special note:  it's possible that canvasPtr->newCurrentPtr ==
  520. !      * canvasPtr->currentItemPtr here.  This can happen, for example,
  521. !      * if LEFT_GRABBED_ITEM was set.
  522. !      */
  523.       canvasPtr->flags &= ~LEFT_GRABBED_ITEM;
  524. !     canvasPtr->currentItemPtr = canvasPtr->newCurrentPtr;
  525.       if (canvasPtr->currentItemPtr != NULL) {
  526.       XEvent event;
  527.   
  528. *** ../tk4.0p1/./tkCanvPs.c    Mon Jun 19 10:05:00 1995
  529. --- ./tkCanvPs.c    Fri Aug  4 10:05:09 1995
  530. ***************
  531. *** 12,18 ****
  532.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  533.    */
  534.   
  535. ! static char sccsid[] = "@(#) tkCanvPs.c 1.35 95/06/19 10:04:58";
  536.   
  537.   #include <stdio.h>
  538.   #include "tkInt.h"
  539. --- 12,18 ----
  540.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  541.    */
  542.   
  543. ! static char sccsid[] = "@(#) tkCanvPs.c 1.36 95/08/04 10:05:08";
  544.   
  545.   #include <stdio.h>
  546.   #include "tkInt.h"
  547. ***************
  548. *** 767,777 ****
  549.       }
  550.       strncpy(fontName, fieldPtrs[FAMILY_FIELD], (size_t) nameSize);
  551.       if (islower(UCHAR(fontName[0]))) {
  552. !     fontName[0] = toupper(fontName[0]);
  553.       }
  554.       for (p = fontName+1, i = nameSize-1; i > 0; p++, i--) {
  555.       if (isupper(UCHAR(*p))) {
  556. !         *p = tolower(*p);
  557.       }
  558.       }
  559.       *p = 0;
  560. --- 767,777 ----
  561.       }
  562.       strncpy(fontName, fieldPtrs[FAMILY_FIELD], (size_t) nameSize);
  563.       if (islower(UCHAR(fontName[0]))) {
  564. !     fontName[0] = toupper(UCHAR(fontName[0]));
  565.       }
  566.       for (p = fontName+1, i = nameSize-1; i > 0; p++, i--) {
  567.       if (isupper(UCHAR(*p))) {
  568. !         *p = tolower(UCHAR(*p));
  569.       }
  570.       }
  571.       *p = 0;
  572. *** ../tk4.0p1/./tkImgFmtPPM.c    Wed Jul 26 12:57:37 1995
  573. --- ./tkImgFmtPPM.c    Wed Aug 30 15:34:53 1995
  574. ***************
  575. *** 14,20 ****
  576.    *       Australian National University.
  577.    */
  578.   
  579. ! static char sccsid[] = "@(#) tkImgFmtPPM.c 1.8 95/07/26 12:57:36";
  580.   
  581.   #include "tkInt.h"
  582.   #include "tkPort.h"
  583. --- 14,20 ----
  584.    *       Australian National University.
  585.    */
  586.   
  587. ! static char sccsid[] = "@(#) tkImgFmtPPM.c 1.9 95/08/30 15:34:52";
  588.   
  589.   #include "tkInt.h"
  590.   #include "tkPort.h"
  591. ***************
  592. *** 381,388 ****
  593.           }
  594.           c = getc(f);
  595.       }
  596. !     buffer[i] = ' ';
  597. !     i++;
  598.       firstInLine = 0;
  599.       }
  600.       buffer[i] = 0;
  601. --- 381,390 ----
  602.           }
  603.           c = getc(f);
  604.       }
  605. !     if (i < (BUFFER_SIZE-1)) {
  606. !         buffer[i] = ' ';
  607. !         i++;
  608. !     }
  609.       firstInLine = 0;
  610.       }
  611.       buffer[i] = 0;
  612. *** ../tk4.0p1/./tkImgPhoto.c    Tue Jul 25 15:55:28 1995
  613. --- ./tkImgPhoto.c    Mon Aug 28 14:01:06 1995
  614. ***************
  615. *** 16,22 ****
  616.    *       Australian National University.
  617.    */
  618.   
  619. ! static char sccsid[] = "@(#) tkImgPhoto.c 1.27 95/07/25 15:55:25";
  620.   
  621.   #include "tkInt.h"
  622.   #include "tkPort.h"
  623. --- 16,22 ----
  624.    *       Australian National University.
  625.    */
  626.   
  627. ! static char sccsid[] = "@(#) tkImgPhoto.c 1.29 95/08/28 14:01:04";
  628.   
  629.   #include "tkInt.h"
  630.   #include "tkPort.h"
  631. ***************
  632. *** 2993,3004 ****
  633.       matched = 0;
  634.       for (formatPtr = formatList; formatPtr != NULL;
  635.        formatPtr = formatPtr->nextPtr) {
  636. !     if ((formatString != NULL)
  637. !         && (strncasecmp(formatString, formatPtr->name,
  638. !         strlen(formatPtr->name)) != 0)) {
  639. !         continue;
  640.       }
  641. -     matched = 1;
  642.       if (formatPtr->fileMatchProc != NULL) {
  643.           fseek(f, 0L, SEEK_SET);
  644.           if ((*formatPtr->fileMatchProc)(f, fileName, formatString,
  645. --- 2993,3010 ----
  646.       matched = 0;
  647.       for (formatPtr = formatList; formatPtr != NULL;
  648.        formatPtr = formatPtr->nextPtr) {
  649. !     if (formatString != NULL) {
  650. !         if (strncasecmp(formatString, formatPtr->name,
  651. !             strlen(formatPtr->name)) != 0) {
  652. !         continue;
  653. !         }
  654. !         matched = 1;
  655. !         if (formatPtr->fileMatchProc == NULL) {
  656. !         Tcl_AppendResult(interp, "-file option isn't supported for ",
  657. !             formatString, " images", (char *) NULL);
  658. !         return TCL_ERROR;
  659. !         }
  660.       }
  661.       if (formatPtr->fileMatchProc != NULL) {
  662.           fseek(f, 0L, SEEK_SET);
  663.           if ((*formatPtr->fileMatchProc)(f, fileName, formatString,
  664. ***************
  665. *** 3017,3023 ****
  666.       if (formatPtr == NULL) {
  667.       if ((formatString != NULL) && !matched) {
  668.           Tcl_AppendResult(interp, "image file format \"", formatString,
  669. !             "\" is unknown", (char *) NULL);
  670.       } else {
  671.           Tcl_AppendResult(interp,
  672.               "couldn't recognize data in image file \"",
  673. --- 3023,3029 ----
  674.       if (formatPtr == NULL) {
  675.       if ((formatString != NULL) && !matched) {
  676.           Tcl_AppendResult(interp, "image file format \"", formatString,
  677. !             "\" is not supported", (char *) NULL);
  678.       } else {
  679.           Tcl_AppendResult(interp,
  680.               "couldn't recognize data in image file \"",
  681. ***************
  682. *** 3072,3085 ****
  683.        * Scan through the table of file format handlers to find
  684.        * one which can handle the image.
  685.        */
  686.       matched = 0;
  687.       for (formatPtr = formatList; formatPtr != NULL;
  688.           formatPtr = formatPtr->nextPtr) {
  689. !     if ((formatString != NULL) && (strncasecmp(formatString,
  690. !         formatPtr->name, strlen(formatPtr->name)) != 0)) {
  691. !         continue;
  692.       }
  693. -     matched = 1;
  694.       if ((formatPtr->stringMatchProc != NULL)
  695.           && (*formatPtr->stringMatchProc)(string, formatString,
  696.           widthPtr, heightPtr)) {
  697. --- 3078,3099 ----
  698.        * Scan through the table of file format handlers to find
  699.        * one which can handle the image.
  700.        */
  701.       matched = 0;
  702.       for (formatPtr = formatList; formatPtr != NULL;
  703.           formatPtr = formatPtr->nextPtr) {
  704. !     if (formatString != NULL) {
  705. !         if (strncasecmp(formatString, formatPtr->name,
  706. !             strlen(formatPtr->name)) != 0) {
  707. !         continue;
  708. !         }
  709. !         matched = 1;
  710. !         if (formatPtr->stringMatchProc == NULL) {
  711. !         Tcl_AppendResult(interp, "-data option isn't supported for ",
  712. !             formatString, " images", (char *) NULL);
  713. !         return TCL_ERROR;
  714. !         }
  715.       }
  716.       if ((formatPtr->stringMatchProc != NULL)
  717.           && (*formatPtr->stringMatchProc)(string, formatString,
  718.           widthPtr, heightPtr)) {
  719. ***************
  720. *** 3089,3099 ****
  721.   
  722.       if (formatPtr == NULL) {
  723.       if ((formatString != NULL) && !matched) {
  724. !         Tcl_AppendResult(interp, "image file format \"", formatString,
  725. !             "\" is unknown", (char *) NULL);
  726.       } else {
  727. !         Tcl_AppendResult(interp, "no format found to parse",
  728. !             " image data string", (char *) NULL);
  729.       }
  730.       return TCL_ERROR;
  731.       }
  732. --- 3103,3113 ----
  733.   
  734.       if (formatPtr == NULL) {
  735.       if ((formatString != NULL) && !matched) {
  736. !         Tcl_AppendResult(interp, "image format \"", formatString,
  737. !             "\" is not supported", (char *) NULL);
  738.       } else {
  739. !         Tcl_AppendResult(interp, "couldn't recognize image data",
  740. !             (char *) NULL);
  741.       }
  742.       return TCL_ERROR;
  743.       }
  744. ***************
  745. *** 3191,3197 ****
  746.       xEnd = x + width;
  747.       yEnd = y + height;
  748.       if ((xEnd > masterPtr->width) || (yEnd > masterPtr->height)) {
  749. !     ImgPhotoSetSize(masterPtr, xEnd, yEnd);
  750.       }
  751.   
  752.       if ((y < masterPtr->ditherY) || ((y == masterPtr->ditherY)
  753. --- 3205,3212 ----
  754.       xEnd = x + width;
  755.       yEnd = y + height;
  756.       if ((xEnd > masterPtr->width) || (yEnd > masterPtr->height)) {
  757. !     ImgPhotoSetSize(masterPtr, MAX(xEnd, masterPtr->width),
  758. !         MAX(yEnd, masterPtr->height));
  759.       }
  760.   
  761.       if ((y < masterPtr->ditherY) || ((y == masterPtr->ditherY)
  762. ***************
  763. *** 3228,3234 ****
  764.           && (blockPtr->pitch == pitch)))) {
  765.       memcpy((VOID *) destLinePtr,
  766.           (VOID *) (blockPtr->pixelPtr + blockPtr->offset[0]),
  767. !         (size_t) (height * pitch));
  768.       } else {
  769.       for (hLeft = height; hLeft > 0;) {
  770.           srcLinePtr = blockPtr->pixelPtr + blockPtr->offset[0];
  771. --- 3243,3249 ----
  772.           && (blockPtr->pitch == pitch)))) {
  773.       memcpy((VOID *) destLinePtr,
  774.           (VOID *) (blockPtr->pixelPtr + blockPtr->offset[0]),
  775. !         (size_t) (height * width * 3));
  776.       } else {
  777.       for (hLeft = height; hLeft > 0;) {
  778.           srcLinePtr = blockPtr->pixelPtr + blockPtr->offset[0];
  779. ***************
  780. *** 3347,3353 ****
  781.       xEnd = x + width;
  782.       yEnd = y + height;
  783.       if ((xEnd > masterPtr->width) || (yEnd > masterPtr->height)) {
  784. !     ImgPhotoSetSize(masterPtr, xEnd, yEnd);
  785.       }
  786.   
  787.       if ((y < masterPtr->ditherY) || ((y == masterPtr->ditherY)
  788. --- 3362,3369 ----
  789.       xEnd = x + width;
  790.       yEnd = y + height;
  791.       if ((xEnd > masterPtr->width) || (yEnd > masterPtr->height)) {
  792. !     ImgPhotoSetSize(masterPtr, MAX(xEnd, masterPtr->width),
  793. !         MAX(yEnd, masterPtr->height));
  794.       }
  795.   
  796.       if ((y < masterPtr->ditherY) || ((y == masterPtr->ditherY)
  797. ***************
  798. *** 3956,3962 ****
  799.       height = masterPtr->height;
  800.       }
  801.       if ((width != masterPtr->width) || (height != masterPtr->height)) {
  802. !     ImgPhotoSetSize(masterPtr, width, height);
  803.       Tk_ImageChanged(masterPtr->tkMaster, 0, 0, 0, 0, masterPtr->width,
  804.           masterPtr->height);
  805.       }
  806. --- 3972,3979 ----
  807.       height = masterPtr->height;
  808.       }
  809.       if ((width != masterPtr->width) || (height != masterPtr->height)) {
  810. !     ImgPhotoSetSize(masterPtr, MAX(width, masterPtr->width),
  811. !         MAX(height, masterPtr->height));
  812.       Tk_ImageChanged(masterPtr->tkMaster, 0, 0, 0, 0, masterPtr->width,
  813.           masterPtr->height);
  814.       }
  815. *** ../tk4.0p1/./tkText.c    Thu Jul 20 09:42:41 1995
  816. --- ./tkText.c    Mon Aug 21 11:46:28 1995
  817. ***************
  818. *** 14,20 ****
  819.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  820.    */
  821.   
  822. ! static char sccsid[] = "@(#) tkText.c 1.80 95/07/20 09:42:42";
  823.   
  824.   #include "default.h"
  825.   #include "tkPort.h"
  826. --- 14,20 ----
  827.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  828.    */
  829.   
  830. ! static char sccsid[] = "@(#) tkText.c 1.82 95/08/21 11:46:27";
  831.   
  832.   #include "default.h"
  833.   #include "tkPort.h"
  834. ***************
  835. *** 279,284 ****
  836. --- 279,286 ----
  837.       textPtr->bindingTable = NULL;
  838.       textPtr->currentMarkPtr = NULL;
  839.       textPtr->pickEvent.type = LeaveNotify;
  840. +     textPtr->pickEvent.xcrossing.x = 0;
  841. +     textPtr->pickEvent.xcrossing.y = 0;
  842.       textPtr->numCurTags = 0;
  843.       textPtr->curTagArrayPtr = NULL;
  844.       textPtr->takeFocus = NULL;
  845. ***************
  846. *** 1547,1554 ****
  847.       startingLine = TkBTreeLineIndex(index.linePtr);
  848.       startingChar = index.charIndex;
  849.       if (startingLine >= numLines) {
  850. !     startingLine = 0;
  851. !     startingChar = 0;
  852.       }
  853.       if (argsLeft == 1) {
  854.       if (TkTextGetIndex(interp, textPtr, argv[i+2], &stopIndex) != TCL_OK) {
  855. --- 1549,1562 ----
  856.       startingLine = TkBTreeLineIndex(index.linePtr);
  857.       startingChar = index.charIndex;
  858.       if (startingLine >= numLines) {
  859. !     if (backwards) {
  860. !         startingLine = TkBTreeNumLines(textPtr->tree) - 1;
  861. !         startingChar = TkBTreeCharsInLine(TkBTreeFindLine(textPtr->tree,
  862. !             startingLine));
  863. !     } else {
  864. !         startingLine = 0;
  865. !         startingChar = 0;
  866. !     }
  867.       }
  868.       if (argsLeft == 1) {
  869.       if (TkTextGetIndex(interp, textPtr, argv[i+2], &stopIndex) != TCL_OK) {
  870. *** ../tk4.0p1/./tkTextIndex.c    Wed Jun 28 16:16:36 1995
  871. --- ./tkTextIndex.c    Mon Sep 18 13:26:54 1995
  872. ***************
  873. *** 11,17 ****
  874.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  875.    */
  876.   
  877. ! static char sccsid[] = "@(#) tkTextIndex.c 1.11 95/06/28 16:16:36";
  878.   
  879.   #include "default.h"
  880.   #include "tkPort.h"
  881. --- 11,17 ----
  882.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  883.    */
  884.   
  885. ! static char sccsid[] = "@(#) tkTextIndex.c 1.12 95/09/18 13:26:52";
  886.   
  887.   #include "default.h"
  888.   #include "tkPort.h"
  889. ***************
  890. *** 522,528 ****
  891.       while (isspace(UCHAR(*p))) {
  892.       p++;
  893.       }
  894. !     count = strtoul(p, &end, 0);
  895.       if (end == p) {
  896.       return NULL;
  897.       }
  898. --- 522,528 ----
  899.       while (isspace(UCHAR(*p))) {
  900.       p++;
  901.       }
  902. !     count = strtol(p, &end, 0);
  903.       if (end == p) {
  904.       return NULL;
  905.       }
  906. *** ../tk4.0p1/./tkCanvas.h    Sat Mar 18 16:47:24 1995
  907. --- ./tkCanvas.h    Wed Aug 16 09:39:37 1995
  908. ***************
  909. *** 10,16 ****
  910.    * See the file "license.terms" for information on usage and redistribution
  911.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  912.    *
  913. !  * @(#) tkCanvas.h 1.36 95/03/18 16:47:07
  914.    */
  915.   
  916.   #ifndef _TKCANVAS
  917. --- 10,16 ----
  918.    * See the file "license.terms" for information on usage and redistribution
  919.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  920.    *
  921. !  * @(#) tkCanvas.h 1.37 95/08/16 09:39:35
  922.    */
  923.   
  924.   #ifndef _TKCANVAS
  925. ***************
  926. *** 122,127 ****
  927. --- 122,133 ----
  928.                    * the address of an item named by id. */
  929.       Tk_Item *currentItemPtr;    /* The item currently containing the mouse
  930.                    * pointer, or NULL if none. */
  931. +     Tk_Item *newCurrentPtr;    /* The item that is about to become the
  932. +                  * current one, or NULL.  This field is
  933. +                  * used to detect deletions  of the new
  934. +                  * current item pointer that occur during
  935. +                  * Leave processing of the previous current
  936. +                  * item.  */
  937.       double closeEnough;        /* The mouse is assumed to be inside an
  938.                    * item if it is this close to it. */
  939.       XEvent pickEvent;        /* The event upon which the current choice
  940. *** ../tk4.0p1/./tkPort.h    Thu May 11 10:49:36 1995
  941. --- ./tkPort.h    Mon Aug 28 09:33:15 1995
  942. ***************
  943. *** 11,17 ****
  944.    * See the file "license.terms" for information on usage and redistribution
  945.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  946.    *
  947. !  * @(#) tkPort.h 1.5 95/05/11 10:49:35
  948.    */
  949.   
  950.   #ifndef _TKPORT
  951. --- 11,17 ----
  952.    * See the file "license.terms" for information on usage and redistribution
  953.    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  954.    *
  955. !  * @(#) tkPort.h 1.6 95/08/28 09:33:16
  956.    */
  957.   
  958.   #ifndef _TKPORT
  959. ***************
  960. *** 79,92 ****
  961.   extern int errno;
  962.   
  963.   /*
  964. -  * Define OPEN_MAX if it isn't already defined for this system.
  965. -  */
  966. - #ifndef OPEN_MAX
  967. - #   define OPEN_MAX 256
  968. - #endif
  969. - /*
  970.    * The following macro defines the type of the mask arguments to
  971.    * select:
  972.    */
  973. --- 79,84 ----
  974. ***************
  975. *** 116,129 ****
  976.    * The following macro defines the number of fd_masks in an fd_set:
  977.    */
  978.   
  979.   #if !defined(howmany)
  980.   #   define howmany(x, y) (((x)+((y)-1))/(y))
  981.   #endif
  982. ! #ifdef NFDBITS
  983. ! #   define MASK_SIZE howmany(FD_SETSIZE, NFDBITS)
  984. ! #else
  985. ! #   define MASK_SIZE howmany(OPEN_MAX, NBBY*sizeof(fd_mask))
  986.   #endif
  987.   
  988.   /*
  989.    * The following macro checks to see whether there is buffered
  990. --- 108,127 ----
  991.    * The following macro defines the number of fd_masks in an fd_set:
  992.    */
  993.   
  994. + #ifndef FD_SETSIZE
  995. + #   ifdef OPEN_MAX
  996. + #    define FD_SETSIZE OPEN_MAX
  997. + #   else
  998. + #    define FD_SETSIZE 256
  999. + #   endif
  1000. + #endif
  1001.   #if !defined(howmany)
  1002.   #   define howmany(x, y) (((x)+((y)-1))/(y))
  1003.   #endif
  1004. ! #ifndef NFDBITS
  1005. ! #   define NFDBITS NBBY*sizeof(fd_mask)
  1006.   #endif
  1007. + #define MASK_SIZE howmany(FD_SETSIZE, NFDBITS)
  1008.   
  1009.   /*
  1010.    * The following macro checks to see whether there is buffered
  1011. *** ../tk4.0p1/./changes    Fri Jul 28 10:20:44 1995
  1012. --- ./changes    Mon Sep 18 13:27:53 1995
  1013. ***************
  1014. *** 2,8 ****
  1015.   released on March 13, 1991.  Changes that aren't backward compatible
  1016.   are marked specially.
  1017.   
  1018. ! sccsid = %Z% %M% %I% %E% %U%
  1019.   
  1020.   3/16/91 (bug fix) Modified tkWindow.c to remove Tk's Tcl commands from
  1021.   the interpreter when the main window is deleted (otherwise there will
  1022. --- 2,8 ----
  1023.   released on March 13, 1991.  Changes that aren't backward compatible
  1024.   are marked specially.
  1025.   
  1026. ! sccsid = @(#) changes 1.23 95/09/18 13:27:50
  1027.   
  1028.   3/16/91 (bug fix) Modified tkWindow.c to remove Tk's Tcl commands from
  1029.   the interpreter when the main window is deleted (otherwise there will
  1030. ***************
  1031. *** 2453,2455 ****
  1032. --- 2453,2511 ----
  1033.   posted.
  1034.   
  1035.   ----------------- Released patch 4.0p1, 7/29/95 ----------------------
  1036. + 8/4/95 (bug fix) Calls to toupper and tolower weren't using the UCHAR
  1037. + macro, so they didn't always work in non-U.S. locales. (JO)
  1038. + 8/16/95 (bug fix) Canvases didn't generate proper Enter and Leave
  1039. + events if the Leave handler for an item reconfigured the canvas in
  1040. + a way that made the old current item the new current item again. (JO)
  1041. + 8/21/95 (bug fixes) Fixed memory leaks in tkSend.c, tkSelect.c, and
  1042. + tkWm.c (JO).
  1043. + 8/21/95 (bug fix) Text widgets didn't handle commands like
  1044. + ".t search -backwards foo end 1.0" properly:  never found foo.
  1045. + 8/25/95 (bug fix) Fixed bug in libary/menu.tcl that caused "grab
  1046. + window not visible" errors for popup menus (and perhaps elsewhere?). (JO)
  1047. + 8/25/95 (bug fix) Scrollbar bindings didn't properly handle case where
  1048. + B2 is clicked while B1 is already down. (JO)
  1049. + 8/26/95 (bug fix) Menus were ignoring -activebackground if tk_strictMotif
  1050. + was set, but not -activeforeground.  Changed to ignore both. (JO)
  1051. + 8/26/95 (bug fix) Scales and scrollbars didn't properly handle a
  1052. + -repeatdelay value of 0 (they shouldn't auto-repeat in this case). (JO)
  1053. + 8/28/95 (bug fix) Tcl errors were occurring for tkPriv(oldGrab) when
  1054. + clicking on a disabled option menu. (JO)
  1055. + 8/28/95 (bug fix) Changed event-handling code to use FD_SETSIZE instead
  1056. + of OPEN_MAX, since OPEN_MAX is incorrect on some systems (e.g., IRIX). (JO)
  1057. + 8/28/95 (bug fix) Fixed bug in photo images that caused garbling of
  1058. + image data in the "put" and "copy" commands if the source data had
  1059. + only one scan line but had a width less than the width of the target
  1060. + image. (JO)
  1061. + 8/29/95 (bug fix) Tk used to refuse to post menus if they had no
  1062. + entries.  This made it impossible for a menu to fill itself the first
  1063. + time it is posted.  Changed to allow menus with no entries to be
  1064. + posted. (JO)
  1065. + 8/30/95 (new features) Added proper button 2 support to both scrollbars
  1066. + and scales (it sets the slider position from the mouse position). (JO)
  1067. + 8/30/95 (bug fix) Fixed potential core dump that could occur in
  1068. + photo images (ReadPPMFileHeader could overflow buffer under some bad
  1069. + inputs, such as certain GIF images). (JO)
  1070. + 8/39/95 (bug fix) Errors of the form `syntax error in expression "!"'
  1071. + could occasionally happen in tkScaleDrag. (JO)
  1072. + 9/19/95 (bug fix) Fixed bug in text index processing that causes
  1073. + tests textIndex-11.1 and textIndex12.1 to fail on some platforms.
  1074. + ----------------- Released patch 4.0p2, 9/19/95 ----------------------
  1075. *** ../tk4.0p1/./configure    Tue Jul 25 17:30:46 1995
  1076. --- ./configure    Mon Sep 18 11:08:13 1995
  1077. ***************
  1078. *** 401,407 ****
  1079.   
  1080.   
  1081.   
  1082. ! # @(#) configure.in 1.17 95/06/27 21:54:20
  1083.   
  1084.   ac_aux_dir=
  1085.   for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
  1086. --- 401,407 ----
  1087.   
  1088.   
  1089.   
  1090. ! # @(#) configure.in 1.18 95/09/05 17:04:17
  1091.   
  1092.   ac_aux_dir=
  1093.   for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
  1094. ***************
  1095. *** 1732,1738 ****
  1096.   #include <stdio.h>
  1097.   int main() { return 0; }
  1098.   int t() {
  1099. ! FILE *f = stdin; f->_gptr = f->egptr;
  1100.   ; return 0; }
  1101.   EOF
  1102.   if eval $ac_compile; then
  1103. --- 1732,1738 ----
  1104.   #include <stdio.h>
  1105.   int main() { return 0; }
  1106.   int t() {
  1107. ! FILE *f = stdin; f->_gptr = f->_egptr;
  1108.   ; return 0; }
  1109.   EOF
  1110.   if eval $ac_compile; then
  1111. *** ../tk4.0p1/./configure.in    Tue Jun 27 21:54:19 1995
  1112. --- ./configure.in    Tue Sep  5 17:04:17 1995
  1113. ***************
  1114. *** 3,9 ****
  1115.   dnl    to configure the system for the local environment.
  1116.   AC_INIT(tk.h)
  1117.   
  1118. ! # @(#) configure.in 1.17 95/06/27 21:54:20
  1119.   
  1120.   AC_PROG_INSTALL
  1121.   AC_PROG_RANLIB
  1122. --- 3,9 ----
  1123.   dnl    to configure the system for the local environment.
  1124.   AC_INIT(tk.h)
  1125.   
  1126. ! # @(#) configure.in 1.18 95/09/05 17:04:17
  1127.   
  1128.   AC_PROG_INSTALL
  1129.   AC_PROG_RANLIB
  1130. ***************
  1131. *** 224,230 ****
  1132.   fi
  1133.   if test "$fcnt" = ""; then
  1134.       AC_TRY_COMPILE([#include <stdio.h>],
  1135. !     [FILE *f = stdin; f->_gptr = f->egptr;],
  1136.       tk_ok=yes, tk_ok=no)
  1137.       if test $tk_ok = yes; then
  1138.       AC_DEFINE(TK_FILE_GPTR)
  1139. --- 224,230 ----
  1140.   fi
  1141.   if test "$fcnt" = ""; then
  1142.       AC_TRY_COMPILE([#include <stdio.h>],
  1143. !     [FILE *f = stdin; f->_gptr = f->_egptr;],
  1144.       tk_ok=yes, tk_ok=no)
  1145.       if test $tk_ok = yes; then
  1146.       AC_DEFINE(TK_FILE_GPTR)
  1147. *** ../tk4.0p1/./library/listbox.tcl    Tue Jul 25 13:24:34 1995
  1148. --- ./library/listbox.tcl    Tue Aug 22 08:49:49 1995
  1149. ***************
  1150. *** 3,9 ****
  1151.   # This file defines the default bindings for Tk listbox widgets
  1152.   # and provides procedures that help in implementing those bindings.
  1153.   #
  1154. ! # @(#) listbox.tcl 1.12 95/07/25 13:24:32
  1155.   #
  1156.   # Copyright (c) 1994 The Regents of the University of California.
  1157.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1158. --- 3,9 ----
  1159.   # This file defines the default bindings for Tk listbox widgets
  1160.   # and provides procedures that help in implementing those bindings.
  1161.   #
  1162. ! # @(#) listbox.tcl 1.13 95/08/22 08:49:50
  1163.   #
  1164.   # Copyright (c) 1994 The Regents of the University of California.
  1165.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1166. ***************
  1167. *** 26,33 ****
  1168.   # The code below creates the default class bindings for listboxes.
  1169.   #-------------------------------------------------------------------------
  1170.   
  1171.   bind Listbox <1> {
  1172. !     tkListboxBeginSelect %W [%W index @%x,%y]
  1173.   }
  1174.   bind Listbox <B1-Motion> {
  1175.       set tkPriv(x) %x
  1176. --- 26,41 ----
  1177.   # The code below creates the default class bindings for listboxes.
  1178.   #-------------------------------------------------------------------------
  1179.   
  1180. + # Note: the check for existence of %W below is because this binding
  1181. + # is sometimes invoked after a window has been deleted (e.g. because
  1182. + # there is a double-click binding on the widget that deletes it).  Users
  1183. + # can put "break"s in their bindings to avoid the error, but this check
  1184. + # makes that unnecessary.
  1185.   bind Listbox <1> {
  1186. !     if [winfo exists %W] {
  1187. !     tkListboxBeginSelect %W [%W index @%x,%y]
  1188. !     }
  1189.   }
  1190.   bind Listbox <B1-Motion> {
  1191.       set tkPriv(x) %x
  1192. *** ../tk4.0p1/./library/menu.tcl    Fri Jul 28 09:35:56 1995
  1193. --- ./library/menu.tcl    Tue Aug 29 17:33:54 1995
  1194. ***************
  1195. *** 4,10 ****
  1196.   # It also implements keyboard traversal of menus and implements a few
  1197.   # other utility procedures related to menus.
  1198.   #
  1199. ! # @(#) menu.tcl 1.52 95/07/28 09:35:55
  1200.   #
  1201.   # Copyright (c) 1992-1994 The Regents of the University of California.
  1202.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1203. --- 4,10 ----
  1204.   # It also implements keyboard traversal of menus and implements a few
  1205.   # other utility procedures related to menus.
  1206.   #
  1207. ! # @(#) menu.tcl 1.54 95/08/29 17:33:53
  1208.   #
  1209.   # Copyright (c) 1992-1994 The Regents of the University of California.
  1210.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1211. ***************
  1212. *** 213,219 ****
  1213.       return
  1214.       }
  1215.       set menu [$w cget -menu]
  1216. !     if {($menu == "") || ([$menu index last] == "none")} {
  1217.       return
  1218.       }
  1219.       if ![string match $w.* $menu] {
  1220. --- 213,219 ----
  1221.       return
  1222.       }
  1223.       set menu [$w cget -menu]
  1224. !     if {$menu == ""} {
  1225.       return
  1226.       }
  1227.       if ![string match $w.* $menu] {
  1228. ***************
  1229. *** 431,437 ****
  1230.           && [winfo ismapped [winfo parent $menu]]} {
  1231.           set menu [winfo parent $menu]
  1232.       }
  1233. !     tkSaveGrabInfo $menu
  1234.       grab -global $menu
  1235.       }
  1236.   }
  1237. --- 431,449 ----
  1238.           && [winfo ismapped [winfo parent $menu]]} {
  1239.           set menu [winfo parent $menu]
  1240.       }
  1241. !     # Don't update grab information if the grab window isn't changing.
  1242. !     # Otherwise, we'll get an error when we unpost the menus and
  1243. !     # restore the grab, since the old grab window will not be viewable
  1244. !     # anymore.
  1245. !     if {$menu != [grab current $menu]} {
  1246. !         tkSaveGrabInfo $menu
  1247. !     }
  1248. !     # Must re-grab even if the grab window hasn't changed, in order
  1249. !     # to release the implicit grab from the button press.
  1250.       grab -global $menu
  1251.       }
  1252.   }
  1253. *** ../tk4.0p1/./library/scale.tcl    Thu Jun  8 13:18:31 1995
  1254. --- ./library/scale.tcl    Wed Aug 30 09:46:56 1995
  1255. ***************
  1256. *** 3,9 ****
  1257.   # This file defines the default bindings for Tk scale widgets and provides
  1258.   # procedures that help in implementing the bindings.
  1259.   #
  1260. ! # @(#) scale.tcl 1.7 95/05/05 16:56:09
  1261.   #
  1262.   # Copyright (c) 1994 The Regents of the University of California.
  1263.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1264. --- 3,9 ----
  1265.   # This file defines the default bindings for Tk scale widgets and provides
  1266.   # procedures that help in implementing the bindings.
  1267.   #
  1268. ! # @(#) scale.tcl 1.9 95/08/30 09:46:57
  1269.   #
  1270.   # Copyright (c) 1994 The Regents of the University of California.
  1271.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1272. ***************
  1273. *** 50,56 ****
  1274.       tkScaleActivate %W %x %y
  1275.   }
  1276.   bind Scale <2> {
  1277. !     tkScaleButtonDown %W %x %y
  1278.   }
  1279.   bind Scale <B2-Motion> {
  1280.       tkScaleDrag %W %x %y
  1281. --- 50,56 ----
  1282.       tkScaleActivate %W %x %y
  1283.   }
  1284.   bind Scale <2> {
  1285. !     tkScaleButton2Down %W %x %y
  1286.   }
  1287.   bind Scale <B2-Motion> {
  1288.       tkScaleDrag %W %x %y
  1289. ***************
  1290. *** 211,218 ****
  1291.       set tkPriv(afterId) [after [$w cget -repeatinterval] \
  1292.           tkScaleIncrement $w $dir $big again]
  1293.       } elseif {$repeat == "initial"} {
  1294. !     set tkPriv(afterId) [after [$w cget -repeatdelay] \
  1295. !         tkScaleIncrement $w $dir $big again]
  1296.       }
  1297.   }
  1298.   
  1299. --- 211,221 ----
  1300.       set tkPriv(afterId) [after [$w cget -repeatinterval] \
  1301.           tkScaleIncrement $w $dir $big again]
  1302.       } elseif {$repeat == "initial"} {
  1303. !     set delay [$w cget -repeatdelay]
  1304. !     if {$delay > 0} {
  1305. !         set tkPriv(afterId) [after $delay \
  1306. !             tkScaleIncrement $w $dir $big again]
  1307. !     }
  1308.       }
  1309.   }
  1310.   
  1311. ***************
  1312. *** 232,235 ****
  1313. --- 235,262 ----
  1314.       } elseif {$el == "trough2"} {
  1315.       $w set [$w cget -to]
  1316.       }
  1317. + }
  1318. + # tkScaleButton2Down
  1319. + # This procedure is invoked when button 2 is pressed over a scale.
  1320. + # It sets the value to correspond to the mouse position and starts
  1321. + # a slider drag.
  1322. + #
  1323. + # Arguments:
  1324. + # w -        The scrollbar widget.
  1325. + # x, y -    Mouse coordinates within the widget.
  1326. + proc tkScaleButton2Down {w x y} {
  1327. +     global tkPriv
  1328. +     if {[$w cget -state] == "disabled"} {
  1329. +     return;
  1330. +     }
  1331. +     $w configure -state active
  1332. +     $w set [$w get $x $y]
  1333. +     set tkPriv(dragging) 1
  1334. +     set tkPriv(initValue) [$w get]
  1335. +     set coords "$x $y"
  1336. +     set tkPriv(deltaX) 0
  1337. +     set tkPriv(deltaY) 0
  1338.   }
  1339. *** ../tk4.0p1/./library/scrollbar.tcl    Thu Jun 29 14:03:05 1995
  1340. --- ./library/scrollbar.tcl    Tue Sep  5 15:19:07 1995
  1341. ***************
  1342. *** 3,9 ****
  1343.   # This file defines the default bindings for Tk scrollbar widgets.
  1344.   # It also provides procedures that help in implementing the bindings.
  1345.   #
  1346. ! # @(#) scrollbar.tcl 1.13 95/06/29 14:03:03
  1347.   #
  1348.   # Copyright (c) 1994 The Regents of the University of California.
  1349.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1350. --- 3,9 ----
  1351.   # This file defines the default bindings for Tk scrollbar widgets.
  1352.   # It also provides procedures that help in implementing the bindings.
  1353.   #
  1354. ! # @(#) scrollbar.tcl 1.18 95/09/05 15:19:08
  1355.   #
  1356.   # Copyright (c) 1994 The Regents of the University of California.
  1357.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1358. ***************
  1359. *** 40,45 ****
  1360. --- 40,48 ----
  1361.   bind Scrollbar <B1-Motion> {
  1362.       tkScrollDrag %W %x %y
  1363.   }
  1364. + bind Scrollbar <B1-B2-Motion> {
  1365. +     tkScrollDrag %W %x %y
  1366. + }
  1367.   bind Scrollbar <ButtonRelease-1> {
  1368.       tkScrollButtonUp %W %x %y
  1369.   }
  1370. ***************
  1371. *** 50,57 ****
  1372.       # Prevents <Enter> binding from being invoked.
  1373.   }
  1374.   bind Scrollbar <2> {
  1375. !     tkScrollButtonDown %W %x %y
  1376.   }
  1377.   bind Scrollbar <B2-Motion> {
  1378.       tkScrollDrag %W %x %y
  1379.   }
  1380. --- 53,66 ----
  1381.       # Prevents <Enter> binding from being invoked.
  1382.   }
  1383.   bind Scrollbar <2> {
  1384. !     tkScrollButton2Down %W %x %y
  1385.   }
  1386. + bind Scrollbar <B1-2> {
  1387. +     # Do nothing, since button 1 is already down.
  1388. + }
  1389. + bind Scrollbar <B2-1> {
  1390. +     # Do nothing, since button 2 is already down.
  1391. + }
  1392.   bind Scrollbar <B2-Motion> {
  1393.       tkScrollDrag %W %x %y
  1394.   }
  1395. ***************
  1396. *** 58,63 ****
  1397. --- 67,78 ----
  1398.   bind Scrollbar <ButtonRelease-2> {
  1399.       tkScrollButtonUp %W %x %y
  1400.   }
  1401. + bind Scrollbar <B1-ButtonRelease-2> {
  1402. +     # Do nothing:  B1 release will handle it.
  1403. + }
  1404. + bind Scrollbar <B2-ButtonRelease-1> {
  1405. +     # Do nothing:  B2 release will handle it.
  1406. + }
  1407.   bind Scrollbar <B2-Leave> {
  1408.       # Prevents <Leave> binding from being invoked.
  1409.   }
  1410. ***************
  1411. *** 147,153 ****
  1412.   }
  1413.   
  1414.   # tkScrollSelect --
  1415. ! # This procedure is invoked when button 1 is pressed over the scrollbar.
  1416.   # It invokes one of several scrolling actions depending on where in
  1417.   # the scrollbar the button was pressed.
  1418.   #
  1419. --- 162,168 ----
  1420.   }
  1421.   
  1422.   # tkScrollSelect --
  1423. ! # This procedure is invoked when a button is pressed over the scrollbar.
  1424.   # It invokes one of several scrolling actions depending on where in
  1425.   # the scrollbar the button was pressed.
  1426.   #
  1427. ***************
  1428. *** 177,184 ****
  1429.       set tkPriv(afterId) [after [$w cget -repeatinterval] \
  1430.           tkScrollSelect $w $element again]
  1431.       } elseif {$repeat == "initial"} {
  1432. !     set tkPriv(afterId) [after [$w cget -repeatdelay] \
  1433. !         tkScrollSelect $w $element again]
  1434.       }
  1435.   }
  1436.   
  1437. --- 192,201 ----
  1438.       set tkPriv(afterId) [after [$w cget -repeatinterval] \
  1439.           tkScrollSelect $w $element again]
  1440.       } elseif {$repeat == "initial"} {
  1441. !     set delay [$w cget -repeatdelay]
  1442. !     if {$delay > 0} {
  1443. !         set tkPriv(afterId) [after $delay tkScrollSelect $w $element again]
  1444. !     }
  1445.       }
  1446.   }
  1447.   
  1448. ***************
  1449. *** 354,357 ****
  1450. --- 371,404 ----
  1451.       } elseif [string match *2 $element] {
  1452.       tkScrollToPos $w 1
  1453.       }
  1454. + }
  1455. + # tkScrollButton2Down
  1456. + # This procedure is invoked when button 2 is pressed over a scrollbar.
  1457. + # If the button is over the trough or slider, it sets the scrollbar to
  1458. + # the mouse position and starts a slider drag.  Otherwise it just
  1459. + # behaves the same as button 1.
  1460. + #
  1461. + # Arguments:
  1462. + # w -        The scrollbar widget.
  1463. + # x, y -    Mouse coordinates within the widget.
  1464. + proc tkScrollButton2Down {w x y} {
  1465. +     global tkPriv
  1466. +     set element [$w identify $x $y]
  1467. +     if {($element == "arrow1") || ($element == "arrow2")} {
  1468. +     tkScrollButtonDown $w $x $y
  1469. +     return
  1470. +     }
  1471. +     tkScrollToPos $w [$w fraction $x $y]
  1472. +     # Need the "update idletasks" below so that the widget calls us
  1473. +     # back to reset the actual scrollbar position before we start the
  1474. +     # slider drag.
  1475. +     update idletasks
  1476. +     set tkPriv(relief) [$w cget -activerelief]
  1477. +     $w configure -activerelief sunken
  1478. +     $w activate slider
  1479. +     tkScrollStartDrag $w $x $y
  1480.   }
  1481. *** ../tk4.0p1/./library/tk.tcl    Wed Jun 21 09:20:14 1995
  1482. --- ./library/tk.tcl    Wed Aug 30 16:40:21 1995
  1483. ***************
  1484. *** 3,9 ****
  1485.   # Initialization script normally executed in the interpreter for each
  1486.   # Tk-based application.  Arranges class bindings for widgets.
  1487.   #
  1488. ! # @(#) tk.tcl 1.67 95/06/19 10:45:49
  1489.   #
  1490.   # Copyright (c) 1992-1994 The Regents of the University of California.
  1491.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1492. --- 3,9 ----
  1493.   # Initialization script normally executed in the interpreter for each
  1494.   # Tk-based application.  Arranges class bindings for widgets.
  1495.   #
  1496. ! # @(#) tk.tcl 1.73 95/08/30 16:40:20
  1497.   #
  1498.   # Copyright (c) 1992-1994 The Regents of the University of California.
  1499.   # Copyright (c) 1994-1995 Sun Microsystems, Inc.
  1500. ***************
  1501. *** 52,58 ****
  1502.       set tkPriv(afterId) {}
  1503.       set tkPriv(buttons) 0
  1504.       set tkPriv(buttonWindow) {}
  1505. !     set tkPriv(dragging) {}
  1506.       set tkPriv(focus) {}
  1507.       set tkPriv(grab) {}
  1508.       set tkPriv(initPos) {}
  1509. --- 52,58 ----
  1510.       set tkPriv(afterId) {}
  1511.       set tkPriv(buttons) 0
  1512.       set tkPriv(buttonWindow) {}
  1513. !     set tkPriv(dragging) 0
  1514.       set tkPriv(focus) {}
  1515.       set tkPriv(grab) {}
  1516.       set tkPriv(initPos) {}
  1517. ***************
  1518. *** 59,64 ****
  1519. --- 59,65 ----
  1520.       set tkPriv(inMenubutton) {}
  1521.       set tkPriv(listboxPrev) {}
  1522.       set tkPriv(mouseMoved) 0
  1523. +     set tkPriv(oldGrab) {}
  1524.       set tkPriv(popup) {}
  1525.       set tkPriv(postedMb) {}
  1526.       set tkPriv(pressX) 0
  1527. *** ../tk4.0p1/./doc/scale.n    Wed Jun  7 21:15:49 1995
  1528. --- ./doc/scale.n    Wed Aug 30 10:05:02 1995
  1529. ***************
  1530. *** 5,14 ****
  1531.   '\" See the file "license.terms" for information on usage and redistribution
  1532.   '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  1533.   '\" 
  1534. ! '\" @(#) scale.n 1.23 95/06/07 21:15:31
  1535.   '\" 
  1536.   .so man.macros
  1537. ! .TH scale n 4.0 Tk "Tk Built-In Commands"
  1538.   .BS
  1539.   '\" Note:  do not modify the .SH NAME line immediately below!
  1540.   .SH NAME
  1541. --- 5,14 ----
  1542.   '\" See the file "license.terms" for information on usage and redistribution
  1543.   '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  1544.   '\" 
  1545. ! '\" @(#) scale.n 1.24 95/08/30 10:05:01
  1546.   '\" 
  1547.   .so man.macros
  1548. ! .TH scale n 4.1 Tk "Tk Built-In Commands"
  1549.   .BS
  1550.   '\" Note:  do not modify the .SH NAME line immediately below!
  1551.   .SH NAME
  1552. ***************
  1553. *** 322,341 ****
  1554.   the slider moves all the way to the end of its range, in the
  1555.   direction towards the mouse cursor.
  1556.   .IP [4]
  1557.   The Up and Left keys move the slider up (left) by the value
  1558.   of the \fBresolution\fR option.
  1559. ! .IP [5]
  1560.   The Down and Right keys move the slider down (right) by the value
  1561.   of the \fBresolution\fR option.
  1562. ! .IP [6]
  1563.   Control-Up and Control-Left move the slider up (left) by the
  1564.   value of the \fBbigIncrement\fR option.
  1565. ! .IP [7]
  1566.   Control-Down and Control-Right move the slider down (right) by the
  1567.   value of the \fBbigIncrement\fR option.
  1568. - .IP [8]
  1569. - Home moves the slider to the top (left) end of its range.
  1570.   .IP [9]
  1571.   End moves the slider to the bottom (right) end of its range.
  1572.   .PP
  1573.   If the scale is disabled using the \fBstate\fR option then
  1574. --- 322,345 ----
  1575.   the slider moves all the way to the end of its range, in the
  1576.   direction towards the mouse cursor.
  1577.   .IP [4]
  1578. + If button 2 is pressed, the scale's value is set to the mouse
  1579. + position.  If the mouse is dragged with button 2 down, the scale's
  1580. + value changes with the drag.
  1581. + .IP [5]
  1582.   The Up and Left keys move the slider up (left) by the value
  1583.   of the \fBresolution\fR option.
  1584. ! .IP [6]
  1585.   The Down and Right keys move the slider down (right) by the value
  1586.   of the \fBresolution\fR option.
  1587. ! .IP [7]
  1588.   Control-Up and Control-Left move the slider up (left) by the
  1589.   value of the \fBbigIncrement\fR option.
  1590. ! .IP [8]
  1591.   Control-Down and Control-Right move the slider down (right) by the
  1592.   value of the \fBbigIncrement\fR option.
  1593.   .IP [9]
  1594. + Home moves the slider to the top (left) end of its range.
  1595. + .IP [10]
  1596.   End moves the slider to the bottom (right) end of its range.
  1597.   .PP
  1598.   If the scale is disabled using the \fBstate\fR option then
  1599. *** ../tk4.0p1/./doc/scrollbar.n    Thu Jun 29 14:25:22 1995
  1600. --- ./doc/scrollbar.n    Wed Aug 30 10:05:02 1995
  1601. ***************
  1602. *** 5,14 ****
  1603.   '\" See the file "license.terms" for information on usage and redistribution
  1604.   '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  1605.   '\" 
  1606. ! '\" @(#) scrollbar.n 1.23 95/06/29 14:25:20
  1607.   '\" 
  1608.   .so man.macros
  1609. ! .TH scrollbar n 4.0 Tk "Tk Built-In Commands"
  1610.   .BS
  1611.   '\" Note:  do not modify the .SH NAME line immediately below!
  1612.   .SH NAME
  1613. --- 5,14 ----
  1614.   '\" See the file "license.terms" for information on usage and redistribution
  1615.   '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  1616.   '\" 
  1617. ! '\" @(#) scrollbar.n 1.24 95/08/30 10:05:00
  1618.   '\" 
  1619.   .so man.macros
  1620. ! .TH scrollbar n 4.1 Tk "Tk Built-In Commands"
  1621.   .BS
  1622.   '\" Note:  do not modify the .SH NAME line immediately below!
  1623.   .SH NAME
  1624. ***************
  1625. *** 335,342 ****
  1626.   document appears to move up (left) one unit.
  1627.   If the button is held down, the action auto-repeats.
  1628.   .IP [6]
  1629. ! All of the above actions may be invoked with button 2 as well
  1630. ! as with button 1.
  1631.   .IP [7]
  1632.   If button 1 is pressed with the Control key down, then if the
  1633.   mouse is over \fBarrow1\fR or \fBtrough1\fR the view changes
  1634. --- 335,345 ----
  1635.   document appears to move up (left) one unit.
  1636.   If the button is held down, the action auto-repeats.
  1637.   .IP [6]
  1638. ! If button 2 is pressed over the trough or the slider, it sets
  1639. ! the view to correspond to the mouse position;  dragging the
  1640. ! mouse with button 2 down causes the view to drag with the mouse.
  1641. ! If button 2 is pressed over one of the arrows, it causes the
  1642. ! same behavior as pressing button 1.
  1643.   .IP [7]
  1644.   If button 1 is pressed with the Control key down, then if the
  1645.   mouse is over \fBarrow1\fR or \fBtrough1\fR the view changes
  1646. *** ../tk4.0p1/./tests/imgPhoto.test    Wed Jun 21 15:50:08 1995
  1647. --- ./tests/imgPhoto.test    Mon Aug 28 09:52:10 1995
  1648. ***************
  1649. *** 21,27 ****
  1650.   #
  1651.   # Author: Paul Mackerras (paulus@cs.anu.edu.au)
  1652.   #
  1653. ! # @(#) imgPhoto.test 1.9 95/06/21 15:50:04
  1654.   
  1655.   if {[info procs test] != "test"} {
  1656.       source defs
  1657. --- 21,27 ----
  1658.   #
  1659.   # Author: Paul Mackerras (paulus@cs.anu.edu.au)
  1660.   #
  1661. ! # @(#) imgPhoto.test 1.10 95/08/28 09:52:11
  1662.   
  1663.   if {[info procs test] != "test"} {
  1664.       source defs
  1665. ***************
  1666. *** 52,58 ****
  1667.       list [catch {image create photo p1 -file \
  1668.           $tk_library/demos/images/teapot.ppm \
  1669.           -format no.such.format} err] $err
  1670. ! } {1 {image file format "no.such.format" is unknown}}
  1671.   test imgPhoto-1.4 {options for photo images} {
  1672.       image create photo p1 -file $tk_library/demos/images/teapot.ppm
  1673.       list [image width p1] [image height p1]
  1674. --- 52,58 ----
  1675.       list [catch {image create photo p1 -file \
  1676.           $tk_library/demos/images/teapot.ppm \
  1677.           -format no.such.format} err] $err
  1678. ! } {1 {image file format "no.such.format" is not supported}}
  1679.   test imgPhoto-1.4 {options for photo images} {
  1680.       image create photo p1 -file $tk_library/demos/images/teapot.ppm
  1681.       list [image width p1] [image height p1]
  1682. ***************
  1683. *** 237,243 ****
  1684.   test imgPhoto-4.33 {ImgPhotoCmd procedure: read option} {
  1685.       list [catch {p1 read $tk_library/demos/images/teapot.ppm \
  1686.           -format bogus} err] $err
  1687. ! } {1 {image file format "bogus" is unknown}}
  1688.   test imgPhoto-4.34 {ImgPhotoCmd procedure: read option} {
  1689.       list [catch {p1 read README} err] $err
  1690.   } {1 {couldn't recognize data in image file "README"}}
  1691. --- 237,243 ----
  1692.   test imgPhoto-4.33 {ImgPhotoCmd procedure: read option} {
  1693.       list [catch {p1 read $tk_library/demos/images/teapot.ppm \
  1694.           -format bogus} err] $err
  1695. ! } {1 {image file format "bogus" is not supported}}
  1696.   test imgPhoto-4.34 {ImgPhotoCmd procedure: read option} {
  1697.       list [catch {p1 read README} err] $err
  1698.   } {1 {couldn't recognize data in image file "README"}}
  1699.